// Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.linqingying.gitcode.api.data.pullrequest.timeline

import com.linqingying.gitcode.api.data.GCActor
import com.linqingying.gitcode.api.data.pullrequest.GCPullRequestState
import java.util.*

interface GCPRTimelineEvent : GCPRTimelineItem {
  val actor: GCActor?
  override val createdAt: Date

  /**
   * Simple events which can be merged together
   */
  interface Simple : GCPRTimelineEvent

  /**
   * Events about pull request state
   */
  interface State : GCPRTimelineEvent {
    val newState: GCPullRequestState
  }

  /**
   * More complex events which can NOT be merged together
   */
  interface Complex : GCPRTimelineEvent

  /**
   * Pull request head/base branch changes events
   */
  interface Branch : Complex
}
